이콜레모 개발자 위키

DOM vs ElementTree


Youngrok Pak at 11 years, 10 months ago.

파이썬에서 XML 다루는 도구로 표준 DOM에 가까운 minidom이 있지만, 현재 파이썬 커뮤니티에서는 ElementTree를 권장한다. ElementTree는 DOM을 좀더 pythonic하게 쓰자는 생각에서 만든 것으로, 이름에서 알 수 있듯이 XML의 구성 요소 중에서 Element를 중심으로 트리를 구성한다. 원래 DOM에서는 Node로 트리가 구성되며 Element는 Node의 일종으로 취급된다. 이 차이는 이를테면 다음과 같은 XML 문서가 있을 경우,

<h1>Hello<strong>World</strong>!!</h1>

ElementTree에서는 다음처럼 노드가 구성된다.

  • Element h1
    • h1.text = Hello
    • Element strong
      • strong.text = World
      • strong.tail = !!

DOM에서는 다음과 같다.

  • Element h1
    • Text Hello
    • Element strong
    • Text World
    • Text !!

누 가 봐도 DOM이 더 자연스러운데 왜 ElementTree가 더 pythonic하다는 것일까? 그 이유는 DOM의 API가 상당히 번거롭기 때문이다. XML의 구조를 온전히 반영하려다보니 간단하게 키/값만 엑세스하고 싶을 때는 몹시 귀찮다. 실제로 XML이 쓰일 때 위의 경우처럼 텍스트 사이사이의 엘리먼트가 많이 들어가고, 또 그 순서가 중요한 경우는 HTML 외에는 거의 없다. 그러다보니 API가 좀더 단순한 ElementTree가 유리한 것이다. 


Comments


크리에이티브 커먼즈 라이선스
이 저작물은 크리에이티브 커먼즈 저작자표시 3.0 Unported 라이선스에 따라 이용할 수 있습니다.


Wiki at WikiNamu